package com.ncoach.tracing.model.bean;

import java.util.Date;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

// TODO: Auto-generated Javadoc
/**
 * The Class Paciente.
 */
@Entity
@Table(name = "PACIENTE")
public class Paciente implements IModelTable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 5448220718218818850L;

	/** The altura. */
	@Basic
	@Column(name = "ALTURA")
	private Integer altura;

	/** The apellidos. */
	@Basic
	@Column(name = "APELLIDOS")
	private String apellidos;

	/** The costumbres. */
	@Basic
	@Column(name = "COSTUMBRES")
	private String costumbres;

	/** The email. */
	@Basic
	@Column(name = "EMAIL")
	private String email;

	/** The enfermedades. */
	@Basic
	@Column(name = "ENFERMEDADES")
	private String enfermedades;

	/** The fecha alta. */
	@Basic
	@Column(name = "FECHA_ALTA")
	private Date fechaAlta;

	/** The edad. */
	@Basic
	@Column(name = "FECHA_NACIMIENTO")
	private Date fechaNacimiento;

	/** The id. */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "ID_PACIENTE")
	private Integer id;

	/** The nombre. */
	@Basic
	@Column(name = "NOMBRE")
	private String nombre;

	/** The objetivo. */
	@Basic
	@Column(name = "OBJETIVO")
	private String objetivo;

	/** The revision. */
	@OneToMany(mappedBy = "paciente")
	@Cascade(value = CascadeType.SAVE_UPDATE)
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<Revision> revision;

	/** The telefono. */
	@Basic
	@Column(name = "TELEFONO")
	private Integer telefono;

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Paciente other = (Paciente) obj;
		if (altura == null) {
			if (other.altura != null)
				return false;
		} else if (!altura.equals(other.altura))
			return false;
		if (apellidos == null) {
			if (other.apellidos != null)
				return false;
		} else if (!apellidos.equals(other.apellidos))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (fechaNacimiento == null) {
			if (other.fechaNacimiento != null)
				return false;
		} else if (!fechaNacimiento.equals(other.fechaNacimiento))
			return false;
		if (nombre == null) {
			if (other.nombre != null)
				return false;
		} else if (!nombre.equals(other.nombre))
			return false;
		if (telefono == null) {
			if (other.telefono != null)
				return false;
		} else if (!telefono.equals(other.telefono))
			return false;
		return true;
	}

	/**
	 * Gets the altura.
	 * 
	 * @return the altura
	 */
	public Integer getAltura() {
		return altura;
	}

	/**
	 * Gets the apellidos.
	 * 
	 * @return the apellidos
	 */
	public String getApellidos() {
		return apellidos;
	}

	/**
	 * Gets the costumbres.
	 * 
	 * @return the costumbres
	 */
	public String getCostumbres() {
		return costumbres;
	}

	/**
	 * Gets the email.
	 * 
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Gets the enfermedades.
	 * 
	 * @return the enfermedades
	 */
	public String getEnfermedades() {
		return enfermedades;
	}

	/**
	 * Gets the fecha alta.
	 * 
	 * @return the fecha alta
	 */
	public Date getFechaAlta() {
		return fechaAlta;
	}

	/**
	 * Gets the fecha nacimiento.
	 * 
	 * @return the fecha nacimiento
	 */
	public Date getFechaNacimiento() {
		return fechaNacimiento;
	}

	/**
	 * Gets the id.
	 * 
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * Gets the nombre.
	 * 
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * Gets the objetivo.
	 * 
	 * @return the objetivo
	 */
	public String getObjetivo() {
		return objetivo;
	}

	/**
	 * Gets the revision.
	 * 
	 * @return the revision
	 */
	public List<Revision> getRevision() {
		return revision;
	}

	/**
	 * Gets the telefono.
	 * 
	 * @return the telefono
	 */
	public Integer getTelefono() {
		return telefono;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((altura == null) ? 0 : altura.hashCode());
		result = prime * result
				+ ((apellidos == null) ? 0 : apellidos.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result
				+ ((fechaNacimiento == null) ? 0 : fechaNacimiento.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		result = prime * result
				+ ((telefono == null) ? 0 : telefono.hashCode());
		return result;
	}

	/**
	 * Sets the altura.
	 * 
	 * @param altura
	 *            the new altura
	 */
	public void setAltura(Integer altura) {
		this.altura = altura;
	}

	/**
	 * Sets the apellidos.
	 * 
	 * @param apellidos
	 *            the new apellidos
	 */
	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	/**
	 * Sets the costumbres.
	 * 
	 * @param costumbres
	 *            the new costumbres
	 */
	public void setCostumbres(String costumbres) {
		this.costumbres = costumbres;
	}

	/**
	 * Sets the email.
	 * 
	 * @param email
	 *            the new email
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * Sets the enfermedades.
	 * 
	 * @param enfermedades
	 *            the new enfermedades
	 */
	public void setEnfermedades(String enfermedades) {
		this.enfermedades = enfermedades;
	}

	/**
	 * Sets the fecha alta.
	 * 
	 * @param fechaAlta
	 *            the new fecha alta
	 */
	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	/**
	 * Sets the fecha nacimiento.
	 * 
	 * @param fechaNacimiento
	 *            the new fecha nacimiento
	 */
	public void setFechaNacimiento(Date fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}

	/**
	 * Sets the id.
	 * 
	 * @param id
	 *            the new id
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * Sets the nombre.
	 * 
	 * @param nombre
	 *            the new nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * Sets the objetivo.
	 * 
	 * @param objetivo
	 *            the new objetivo
	 */
	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	/**
	 * Sets the revision.
	 * 
	 * @param revision
	 *            the new revision
	 */
	public void setRevision(List<Revision> revision) {
		this.revision = revision;
	}

	/**
	 * Sets the telefono.
	 * 
	 * @param telefono
	 *            the new telefono
	 */
	public void setTelefono(Integer telefono) {
		this.telefono = telefono;
	}

}
